
///////////////////////////////////////////////////////////////////////////////
//
//  Copyright (c) 2007, Arizona State University
//  All rights reserved.
//  BSD License: http://www.opensource.org/licenses/bsd-license.html
//  Created by: Adam Kubach
//
///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////
//
//
//
///////////////////////////////////////////////////////////////////////////////

#include "AddFileSystemComponent.h"

#include "Usul/Components/Factory.h"

USUL_DECLARE_COMPONENT_FACTORY ( AddFileSystemComponent );
USUL_IMPLEMENT_IUNKNOWN_MEMBERS ( AddFileSystemComponent, AddFileSystemComponent::BaseClass );


///////////////////////////////////////////////////////////////////////////////
//
// Constructor
//
///////////////////////////////////////////////////////////////////////////////

AddFileSystemComponent::AddFileSystemComponent() : BaseClass(),
  _widget ( 0x0 )
{
}


///////////////////////////////////////////////////////////////////////////////
//
// Destructor
//
///////////////////////////////////////////////////////////////////////////////

AddFileSystemComponent::~AddFileSystemComponent()
{
//  delete _widget;
}


///////////////////////////////////////////////////////////////////////////////
//
//  Query for the interface.
//
///////////////////////////////////////////////////////////////////////////////

Usul::Interfaces::IUnknown *AddFileSystemComponent::queryInterface ( unsigned long iid )
{
  switch ( iid )
  {
  case Usul::Interfaces::IUnknown::IID:
  case Minerva::Common::ILayerAddGUIQt::IID:
    return static_cast < Minerva::Common::ILayerAddGUIQt * > ( this );
  default:
    return 0x0;
  }
}


///////////////////////////////////////////////////////////////////////////////
//
//  Return the widget to add the gui.
//
///////////////////////////////////////////////////////////////////////////////

QWidget* AddFileSystemComponent::layerAddGUI()
{
  _widget = new Minerva::QtWidgets::AddFileSystemWidget;
  return _widget;
}


///////////////////////////////////////////////////////////////////////////////
//
//  The name of the layer type.
//
///////////////////////////////////////////////////////////////////////////////

std::string AddFileSystemComponent::name() const
{
  return "File System";
}


///////////////////////////////////////////////////////////////////////////////
//
//  Apply.
//
///////////////////////////////////////////////////////////////////////////////

void AddFileSystemComponent::apply ( Minerva::Core::Data::Feature* parent, DataLoadedCallback dataLoadedCallback )
{
  if ( 0x0 != _widget )
    _widget->apply ( parent, dataLoadedCallback );

  _widget = 0x0;
}
